#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//int main()
//{
//	//int a[] = { 1,2,3,4 };
//	//printf("%d\n", sizeof(a));//16
//	//printf("%d\n", sizeof(a+0));//4
//	//printf("%d\n", sizeof(*a));//4
//	//printf("%d\n", sizeof(a+1));//4
//	//printf("%d\n", sizeof(a[1]));//4
//	//printf("%d\n", sizeof(&a));//16
//	//printf("%d\n", sizeof(*&a));//4
//	//printf("%d\n", sizeof(&a+1));//32
//	//printf("%d\n", sizeof(&a[0]));//4
//	//printf("%d\n", sizeof(&a[0]+1));//8
//
//
//	//int arr[] = { 'a','b','c','d','e','f' };
//	//printf("%d\n", sizeof(arr));//
//	//printf("%d\n", sizeof(arr+0));//
//	//printf("%d\n", sizeof(*arr));//
//	//printf("%d\n", sizeof(arr[1]));//
//	//printf("%d\n", sizeof(&arr));//
//	//printf("%d\n", sizeof(arr));//
//	//printf("%d\n", sizeof(&arr[0]+1));//
//
//	//printf("%d\n", strlen(arr));//
//	//printf("%d\n", strlen(arr[1]));//
//	//printf("%d\n", strlen(&arr));//
//	//printf("%d\n", strlen(&arr+1));//
//	//printf("%d\n", strlen(&arr[0]+1));//
//	//
//	//int ret = strcmp("abq", "abq");
//	//printf("%d\n", ret);
//	//return 0;
//}
#include <assert.h>
//int my_strcmp(const char* str1, const char* str2)
//{
//	assert(str1 && str2);//断言
//
//	while (*str1 == *str2)
//	{
//		if (*str1 == '\0')
//			return 0;
//		str1++;
//		str2++;
//	}
//	//if (*str1 > *str2)
//	//{
//	//	return 1;
//	//}
//	//else
//	//	return -1;
//	return(*str1 - *str2);
//}
//int main()
//{
//	int ret = my_strcmp("aaq","abc");
//	printf("%d\n", ret);
//	return 0;
//}

//int main()
//{
//	char arr1[20] = "abcdef";
//	char arr2[] = "xxxx";
//	strncpy(arr1, arr2, 6);//多出来的用'/0'代替
//	printf("%s\n", arr1);
//	return 0;
//}

//int main()
//{
//	char arr1[20] = "abcdef";
//	char arr2[] = "xxxx";
//	strncat(arr1, arr2,1);
//	printf("%s\n", arr1);
//	return 0;
//}

//int main()
//{
//	char arr1[] = "abcdef";
//	char arr2[] = "abcdefght";
//	int ret=strncmp(arr1, arr2, 7);
//	printf("%d\n", ret);
//}

//int main()
//{
//	char arr1[] = "abcef";
//	char arr2[] = "abc";
//	char* ret=strstr(arr1, arr2);//在字符串里找子字符串
//	printf("%s\n", ret);
//	return 0;
//}


//char* my_strstr(char* str1, char* str2)
//{
//	char* cp = str1;
//	char* s2 = str2;
//	char* s1 = cp;
//	if (*str2 == '\0')//给的字符串为0
//		return str1;
//	while (*cp)
//	{
//		s1 = cp;//每次循环前归位
//		s2 = str2;
//		while (*s1 && *s2 && *s1 == *s2)//不为'\0'且相等
//		{
//			s1++;
//			s2++;
//		}
//		if (*s2 == '\0')//str2走完了
//			return cp;
//		cp++;
//	}
//	return NULL;
//}
//int main()
//{
//	char arr1[] = "abcef";
//	char arr2[] = "abc";
//	char* ret=my_strstr(arr1, arr2);//在字符串里找子字符串
//	if(ret!=NULL)
//		printf("%s\n", ret);
//	else
//		printf("找不到\n");
//	return 0;
//}

//int main()
//{
//	char arr1[] = "zengjunjie@qq.com";
//	char copy[30];
//	strcpy(copy, arr1);
//	char sep[] = "@.";//分隔符
//	char* ret = NULL;
//	for (ret = strtok(copy, sep); ret != NULL; ret = strtok(NULL, sep))//strtok第一个参数不为NULL，strtok会保存它在字符串中的位置，
//		//为NULL，在同一字符串中被保存的位置开始，查找下一个标记。
//	{
//		printf("%s\n", ret);
//	}
//	return 0;
//}

//strerror

#include <string.h>
//int main()
//{
//	FILE* pr = fopen("data.txt", "r"); //打开文件
//	if (pr == NULL)
//	{
//		printf("%s\n", strerror(errno));//打印错误
//		return 1;
//	}
//	fclose(pr);
//	return 0;
//}
//perror(fopen) =fopen:strerror(errno)
 
//#include <ctype.h>
//int main()
//{
//	char arr[20] = { 0 };
//	gets(arr);
//	char* p = arr;
//	while (*p)
//	{
//		if (isupper(*p))//判断是否为大写
//		{
//			*p = tolower(*p);//改为小写
//		}
//		p++;
//	}
//	printf("%s\n", arr);
//	return 0;
//}

void* my_memcpy(void* dest, const void* src, size_t num)
{
	void* ret = dest;
	assert(dest && src);
	while (num--)
	{
		*(char*)dest = *(char*)src;
		dest = (char*)dest + 1;
		src = (char*)src + 1;
	}
	return ret;
}
int main()
{
	int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };
	int arr2[20] = { 0 };
	my_memcpy(arr2, arr1, 40);
	int i = 0;
	for (i = 0; i < 20; i++)
	{
		printf("%d ", arr2[i]);
	}
	return 0;
}